package array

// TakeRightWhile 从array数组的最后一个元素开始提取元素，直到 predicate 返回假值。predicate 会传入三个参数： (value, index, array)。
func TakeRightWhile(array []T, predicate func(value T, index int, array []T) bool) []T {
	var ret []T
	var take = true
	for i := len(array) - 1; i >= 0; i-- {
		take = predicate(array[i], i, array)
		if take {
			ret = append([]T{array[i]}, ret...)
		} else {
			break
		}
	}
	return ret
}
